package com.learn.DesignPattern.Singleton;

/**
 *设计模式
 * -单例模式
 * * 懒汉模式
 * * 饿汉模式
 * * 内部静态类
 * -特点
 * * 单利模式只能有一个实例
 * * 必须自己创建自己的唯一实例
 * * 必须给所有的替她对象提供这一实例
 */
public class SingletonDoubleLock {
    /**
     * 双重锁校验机制     *
     */
    private static volatile SingletonDoubleLock instance=null;

    private SingletonDoubleLock() {
        System.out.println("双重锁校验机制->产生一个学习委员");
    }
    public static synchronized SingletonDoubleLock getInstance() {
        if (instance == null){
            instance = new SingletonDoubleLock();
        }else {
            System.out.println("双重锁校验机制->已经有一个学习委员，不能产生新的学习委员");
        }
        return instance;
    }

    public static void setInstance(SingletonDoubleLock instance) {
        SingletonDoubleLock.instance = instance;
    }
    public void getName(){
        System.out.println("双重锁校验机制->我是学习委员:alex");
    }
}
